<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>Object.defineproperty方法</title>
</head>

<body>
    <script type="text/javascript">
        // let number = 15
        // let person = {
        //     name: "lyuetw",
        //     sex: "男"
        // }

        // // age参数不参与遍历
        // Object.defineProperty(person, "age", {
        //     // value: 18,
        //     // enumerable: true,  // 控制属性是否可以枚举，默认false
        //     // writable: true,  //控制属性是否可以被修改，默认false
        //     // configurable:true //控制属性是否可以被删除，默认false


        //     // 当有人读取age属性时，get函数(getter)就会被调用，且返回值就是age的值
        //     get() {
        //         console.log("有人读取了age属性")
        //         return number
        //     },

        //     set(value) {
        //         console.log("有人修改了age属下，值为", value)
        //         number = value
        //     }

        // })

        // console.log(Object.keys(person))
        // console.log(person)


        // console.log(Object.keys(person))
        // for (let key in person) {
        //     console.log(person[key])
        // }



        <!-- 数据代理：通过一个对象代理对另外一个对象中的属性进行操作（读，写）-->
        let obj = {
            x: 100
        }

        let obj2 = {
            y: 200
        }

        Object.defineProperty(obj2, "x", {
            get(){
                return obj.x
            },

            set(value) {
                obj.x = value
            }
        })


    </script>

</body>

</html>